package cn.tedu.tickets;

/**
 * @author ：Dsi
 * @date ：2021/11/19 17:07
 * Describe ：该类用于实现多线程编程设计实现，4个窗口共计100张票
 *  * 该类使用Implements Runnable来完成
 */
public class TestRunble {
    public static void main(String[] args) {
        MyThread1 m=new MyThread1();
        Thread t1=new Thread(m);
        Thread t2=new Thread(m);
        Thread t3=new Thread(m);
        Thread t4 = new Thread(m);
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}
class MyThread1 implements Runnable {
    int a=1;
    @Override
    public void run() {
        while(true){
            synchronized (Runnable.class){
                if(a<101){
                    try {
                        /*让每个进来循环的线程对象，都经历休眠10ms，增加出错的几率
                         * 问题1：产生重卖。4个线程会重卖3张
                         * 问题2:产生超卖
                         * 原因：sleep（）容易进入阻塞状态*/
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()+"窗口"+"刚卖完第"+"\t"+a++ );
                }

                if(a>100)break;
            }
        }
    }
}